<?php
/**
 * Classes utilitárias para a aplicação
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	util
 */
namespace rpo\util;

/**
 * Interface para um iterator de uma lista
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	util
 */
interface ListIterator extends Iterator {
	/**
	 * Adiciona um elemento à lista
	 * @param Object $e
	 */
	public function add( Object $e );

	/**
	 * Verifica se a lista possui um elemento anterior
	 * @return boolean
	 */
	public function hasPrevious();

	/**
	 * Retorna o próximo índice do Iterator
	 * @return integer
	 */
	public function nextIndex();

	/**
	 * Retorna o elemento anterior do Iterator
	 * @return Object
	 */
	public function previous();

	/**
	 * Retorna o índice anterior do Iterator
	 * @return integer
	 */
	public function previousIndex();

	/**
	 * Substitui o último elemento retornato por ListIterator::next() ou ListIterator::previous()
	 * @param Object $e
	 */
	public function set( Object $e );
}